﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

namespace Sinacor.Tools.Dado
{
    public class TipoMensagem : DadoBase<Sinacor.Tools.Entidade.TipoMensagem>
    {
        public override List<Sinacor.Tools.Entidade.TipoMensagem> consultar(Sinacor.Tools.Entidade.TipoMensagem tipoMensagem)
        {
            StringBuilder sql = new StringBuilder(@" SELECT CODIGOTIPOMENSAGEM As ""Id"", DESCRICAOTIPOMENSAGEM As ""Descricao"" FROM TFWDTIPOMENSAGEM WHERE (1=1) ");
            if (tipoMensagem.Id >= 0)
            {
                sql.Append(" AND CODIGOTIPOMENSAGEM = " + tipoMensagem.Id.ToString() );
            }

            if (!string.IsNullOrEmpty(tipoMensagem.Descricao))
            {
                sql.Append(" AND DESCRICAOTIPOMENSAGEM LIKE '%" + tipoMensagem.Descricao + "%' ");
            }

            ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem> dados = new ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem>();
            IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text);
            return dados.getListResult(cmd);           
        }

        public override void incluir(Sinacor.Tools.Entidade.TipoMensagem tipoMensagem)
        {
            StringBuilder sql = new StringBuilder(@" INSERT INTO TFWDTIPOMENSAGEM (CODIGOTIPOMENSAGEM, DESCRICAOTIPOMENSAGEM) VALUES (" + tipoMensagem.Id + ", '" + tipoMensagem.Descricao.Trim() + "')");
            ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem> dados = new ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
            }
        }


        public override void alterar(Sinacor.Tools.Entidade.TipoMensagem tipoMensagem)
        {
            StringBuilder sql = new StringBuilder(@" UPDATE TFWDTIPOMENSAGEM SET DESCRICAOTIPOMENSAGEM = '" + tipoMensagem.Descricao.Trim() + "' where CODIGOTIPOMENSAGEM = " + tipoMensagem.Id.ToString());
            ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem> dados = new ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
            }
        }

        
        public override void deletar(Sinacor.Tools.Entidade.TipoMensagem tipoMensagem)
        {
            StringBuilder sql = new StringBuilder(@" DELETE FROM TFWDTIPOMENSAGEM WHERE CODIGOTIPOMENSAGEM = " + tipoMensagem.Id.ToString());
            ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem> dados = new ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
            }
        }

        public object buscarProximoId()
        {
            object retorno = null;
            StringBuilder sql = new StringBuilder(@" SELECT MAX(CODIGOTIPOMENSAGEM) + 1 FROM TFWDTIPOMENSAGEM ");
            ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem> dados = new ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                retorno = cmd.ExecuteScalar();
                if (retorno == DBNull.Value)
                    retorno = null;
                cmd.Connection.Close();
            }
            return retorno;            
        }


        public object JaEstaCadastrado (Sinacor.Tools.Entidade.TipoMensagem tipoMensagem)
        {
            object retorno = null;
            StringBuilder sql = new StringBuilder(@" SELECT 1 FROM TFWDTIPOMENSAGEM WHERE (1=1) AND DESCRICAOTIPOMENSAGEM = '" + tipoMensagem.Descricao.Trim() + "'");
            ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem> dados = new ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                retorno = cmd.ExecuteScalar();
                cmd.Connection.Close();
            }
            return retorno;
        }


        public object jaPossuiMensagem(Sinacor.Tools.Entidade.TipoMensagem entidade)
        {
            object retorno = null;
            StringBuilder sql = new StringBuilder(@" SELECT COUNT(CODIGOMENSAGEM) FROM TFWDMENSAGEM WHERE CODIGOTIPOMENSAGEM = '" + entidade.Id.ToString() + "'");
            ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem> dados = new ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                retorno = cmd.ExecuteScalar();
                cmd.Connection.Close();
            }
            return retorno;
        }



        
    }
}
